From: Georges Basile Stavracas Neto Date: Wed, 24 Jun 2020 18:11:51 +0000 (-0300) Subject: appDisplay: Factor out folder loading code X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~684^2^2~102 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=7afab2c28c93060de59d6eb1f157fd0dd9197853;p=gnome-shell.git appDisplay: Factor out folder loading code We'll reuse this code to implement custom positioning in folders. https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284 --- diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index 6b65c1436..e4799e0d8 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -1587,6 +1587,43 @@ class FolderView extends BaseAppView { return new FolderGrid(); } + _getFolderApps() { + const appIds = []; + const excludedApps = this._folder.get_strv('excluded-apps'); + const appSys = Shell.AppSystem.get_default(); + const addAppId = appId => { + if (excludedApps.includes(appId)) + return; + + const app = appSys.lookup_app(appId); + if (!app) + return; + + if (!this._parentalControlsManager.shouldShowApp(app.get_app_info())) + return; + + if (appIds.indexOf(appId) !== -1) + return; + + appIds.push(appId); + }; + + const folderApps = this._folder.get_strv('apps'); + folderApps.forEach(addAppId); + + const folderCategories = this._folder.get_strv('categories'); + const appInfos = this._parentView.getAppInfos(); + appInfos.forEach(appInfo => { + let appCategories = _getCategories(appInfo); + if (!_listsIntersect(folderCategories, appCategories)) + return; + + addAppId(appInfo.get_id()); + }); + + return appIds; + } + // Overridden from BaseAppView animate(animationDirection) { this._grid.animatePulse(animationDirection); @@ -1631,40 +1668,17 @@ class FolderView extends BaseAppView { _loadApps() { let apps = []; - let excludedApps = this._folder.get_strv('excluded-apps'); let appSys = Shell.AppSystem.get_default(); - let addAppId = appId => { - if (excludedApps.includes(appId)) - return; - - let app = appSys.lookup_app(appId); - if (!app) - return; - - if (!this._parentalControlsManager.shouldShowApp(app.get_app_info())) - return; + const appIds = this._getFolderApps(); - if (apps.some(appIcon => appIcon.id == appId)) - return; + appIds.forEach(appId => { + const app = appSys.lookup_app(appId); let icon = this._items.get(appId); if (!icon) icon = new AppIcon(app); apps.push(icon); - }; - - let folderApps = this._folder.get_strv('apps'); - folderApps.forEach(addAppId); - - let folderCategories = this._folder.get_strv('categories'); - let appInfos = this._parentView.getAppInfos(); - appInfos.forEach(appInfo => { - let appCategories = _getCategories(appInfo); - if (!_listsIntersect(folderCategories, appCategories)) - return; - - addAppId(appInfo.get_id()); }); return apps;